package cn.powertime.evaluation.mapper;

import cn.powertime.evaluation.entity.CpsTestPaper;
import cn.powertime.evaluation.vo.*;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.mapstruct.Mapper;

import java.util.List;

/**
 * <p>
 * 试卷表 Mapper 接口
 * </p>
 *
 * @author Yang Xin
 * @since 2019-09-25
 */
@Mapper
public interface CpsTestPaperMapper extends BaseMapper<CpsTestPaper> {

    /**
     * 课后作业/课程刷题试卷列表
     *
     * @param page 分页参数
     * @param vo   请求参数vo
     * @return Page
     */
    Page<RespTestPaperPageVo> selectcourseWorkTestPaperListPage(Page page, @Param("vo") ReqCourseTestPaperSearchVo vo);

    /**
     * 真题模拟试卷查询语句
     *
     * @param page
     * @return
     */
    Page<RespTestPaperPageVo> selectSimulateExaminationPaperPage(Page page);

    /**
     * 通过试卷id查询习题列表
     *
     * @param userId      用户id
     * @param testPaperId 试卷id
     * @return List
     */
    List<RespTopicListVo> selectTopicListByTestPaperId(@Param("userId") Long userId, @Param("testPaperId") Long testPaperId);

    /**
     * 测评练习查询语句
     *
     * @param page
     * @param params
     * @return
     */
    Page<RespTestPaperPageVo> selectTestingPage(Page page, @Param("vo") ReqTestPaperSearchVo params);

    /**
     * 已答试卷
     *
     * @param page   分页参数
     * @param vo     查询条件
     * @param userId 用户id
     * @return Page
     */
    Page<RespAnswerTestPaperVo> selectAnswerRecordPage(Page page, @Param("vo") ReqAnswerTestPaperSearchVo vo, @Param("userId") Long userId);

    /**
     * 查看试卷
     *
     * @param userId      用户id
     * @param testPaperId 试卷id
     * @param resultId    考试结果id
     * @return List
     */
    List<RespAnswerTopicListVo> selectTestPaperView(@Param("userId") Long userId, @Param("testPaperId") Long testPaperId, @Param("resultId") Long resultId);


    /**
     * 通过试卷id查询习题列表
     *
     *
     * @param testPaperId 试卷id
     * @return List
     */
    List<RespTopicListVo> appSelectTopicListByTestPaperId( @Param("testPaperId") Long testPaperId);

}
